package leetcode;

import java.util.Scanner;

public class SpecialString {
    public static boolean isAvailable(char c) {
        return Character.isLetterOrDigit(c);
    }

    public static boolean isSpecial(String str) {
        str = str.toLowerCase();
        int left = 0;
        int right = str.length() - 1;
        while (left < right) {
            //先确定左边第一个有效字符
            while (left < right && !(isAvailable(str.charAt(left)))) {
                left++;
            }
            //确定右边第一个有效字符
            while(left < right && !(isAvailable(str.charAt(right)))){
                right--;
            }
            //比较出不同就返回假 否则就继续比较
            if(str.charAt(left) != str.charAt(right)){
                return false;
            }else{
                left++;
                right--;
            }
        }
        //全部比较完毕 还没有出现不同的情况 就返回true
        return true;
    }

    public static void main(String[] args) {
        //给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写
        /*输入: "A man, a plan, a canal: Panama"
        输出: true
        解释："amanaplanacanalpanama" 是回文串*/
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        System.out.println(isSpecial(s));
    }
}
